HTTP server that exposes stores, arrays, groups#3732
HTTP server that exposes stores, arrays, groups#3732d-v-b wants to merge 8 commits intozarr-developers:mainfrom
Conversation
| @@ -19,47 +19,27 @@ | |||
| ZARR_PROJECT_PATH = Path(".").absolute() | |||
There was a problem hiding this comment.
changes in this file are simplifications to our examples testing infrastructure. Instead of re-writing the script header, we just override the declared zarr dep in the invocation of uv run ...
| @@ -0,0 +1,178 @@ | |||
| """Utilities for determining the set of valid store keys for zarr nodes. | |||
There was a problem hiding this comment.
we eventually need to find a more natural place for this code. I'm not sure which module it should live in.
Didn't end up doing these things. We can add them later if people are interested. |
|
here's a demo of this functionality: |
This PR adds an experimental http server in
experimental.serve. This server can expose stores over http. It can also expose arrays and groups over http. Exposing a store means exposing the entire key: value space of the store. Exposing an array means only exposing the metadata + chunks. Exposing a group means only exposing sub-groups and sub-arrays. See #3731 for more on this distinction.The server is an optional dependency implemented via starlette. It handles byte-range reads and other http methods. CORS headers and allowed methods can be configured. I'm considering handling prefix requests like
foo/barby returning a simple HTML document that lists the visible keys underfoo/bar/, for user-friendliness and to aid httpstore readers that use such responses for listing contents. I'd also like to implement convenience functions for kicking off a server from jupyter and a CLI.Opening as a draft while I work on this.